#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lista.h"

/* insere uma cidade no final da lista de cidades indicada, ou nao faz nada caso a
cidade ja esteja na lista */
void InsereCidade(Cidade **cidade,char *nome)
{
        Cidade *nova,*aux;
        
        aux = BuscaCidade(cidade,nome);

        if (aux != NULL)
                return;

        nova = (Cidade *)malloc(sizeof(Cidade));
        strcpy(nova->cidade,nome);
        nova->prox = NULL;

        aux = *cidade;

        if (aux == NULL)
        {
                *cidade = nova;
                return;
        }
        
        while(aux->prox != NULL)
                aux = aux->prox;

        aux->prox = nova;

        return;
}

/* procura na lista de cidades, se ja existe a cidade indicada */
Cidade *(BuscaCidade(Cidade **cidade,char *nome))
{
        Cidade *aux;

        aux = *cidade;

        while (aux != NULL && strcmp(aux->cidade,nome) != 0)
                aux = aux->prox;

        return aux;
}

/* libera a memoria alocada pela lista de cidades indicada */
void LiberaCidades(Cidade **cidade)
{
        Cidade *lixo;
        
        while (*cidade != NULL)
        {
                lixo = *cidade;
                *cidade = (*cidade)->prox;
                free(lixo);
        }
}

/* imprime as cidade da lista indicada, separadas com ponto e virgula */
void ImprimeCidades(Cidade *cidade)
{
        Cidade *aux;

        aux = cidade;

        while (aux != NULL)
        {
                printf("%s;",aux->cidade);
                aux = aux->prox;
        }
        printf("\n");
}